<?php
header("Pragma: public");
header("Expires: 0");
header("Accept-Ranges: bytes");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type:text/xml");
header('Content-Disposition: attachment; filename=xmltofis.xml');
header("Content-Transfer-Encoding: binary");

$auth_arr = array( 
					'Login' =>'tkachenkopv@kursksmu.net',
					'Pass'=> 'OqZvVNZ'
			); //
$package_arr = array('Applications' => array('Application' => array()));

	foreach ($abiturients as $abiturient):
		// конвертирование пола
		$gender ='';
		if ($abiturient['Abiturient']['gender_id'] == 1) {
			$gender = 2;
		} else {
			$gender = 1;
		}	
		// формирование выбранных специальностей
		$selectedprofessions =  array();
		$selectedprofessions_ids = array();
		foreach ($abiturient['Selectedprofession'] as $selectedprofession):
			array_push($selectedprofessions, $selectedprofession['profession_id'].'-2013');
			array_push($selectedprofessions_ids, $selectedprofession['profession_id']);
		endforeach;
		//debug($selectedprofessions_ids);
		//die();
		// формирование элемента FinSourceAndEduForms конвертирование данных
		// если есть целевое направление то оно всегда первое в списке выбранных специальностей
		$FinSourceAndEduForms = array();
		$selectedprofessioncount = 0;
		foreach ($abiturient['Selectedprofession'] as $selectedprofession):
		$selectedprofessioncount++;
			$newElement = array();
			if ($selectedprofession['learningform_id'] == 1) {
				$newElement['EducationFormID'] = 11;
			} 
			if ($selectedprofession['learningform_id'] == 3) {
				$newElement['EducationFormID'] = 10;
			}
			if ($selectedprofession['learningtype_id'] == 1){
				$newElement['FinanceSourceID'] = 14;
			}
			if ($selectedprofession['learningtype_id'] == 2){
				$newElement['FinanceSourceID'] = 15;
			}			
			if (($selectedprofession['learningtype_id'] == 1)&& ($selectedprofessioncount == 1) && ($abiturient['Targetingintake'])){
				$newElement['FinanceSourceID'] = 16;
				$newElement['TargetOrganizationUID'] = $abiturient['Targetingintake'][0]['tgintakeorg_id'].'-2013';
			}			
			array_push($FinSourceAndEduForms, $newElement);
		endforeach;		
		// формирование елемента ApplicationCommonBenefit
		$privileges = array();
		if ($abiturient['Privilege']) {
			$newElement = array();

			$newElement['CompetitiveGroupID'] = $abiturient['Selectedprofession'][0]['profession_id'].'-2013';
			if ($abiturient['Privilege'][0]['id'] == 2 || $abiturient['Privilege'][0]['id'] == 3 ||
					$abiturient['Privilege'][0]['id'] == 4 || $abiturient['Privilege'][0]['id'] == 5 ||
					$abiturient['Privilege'][0]['id'] == 6 || $abiturient['Privilege'][0]['id'] == 7 ||
					$abiturient['Privilege'][0]['id'] == 8	) {
				$newElement['BenefitKindID'] = 4;
			}			
			if ($abiturient['Privilege'][0]['id'] == 1) {
				$newElement['BenefitKindID'] = 1;
			}
			$privileges = $newElement;
		}
		// формирование элемента EntranceTestResults
		// перебираем все выбранные специальности так как элемент EntranceTestResult может дублироваться
		// в нескольких специальностях
		$testresults = array();
		
		foreach ($abiturient['Result'] as $result):
			if ($result['score'] != 0) {
			/*
			 *  В ФИС id оценки просто не проходит 
			 *  так как это id может всплыть для нескольких специальностей 
			 *  а по мнению ИФС УИД должен быть уникальный
			 *  нужно проверять если оценка играет в нескольких специальностях но дописывать в УИД #i-й раз появления оценки
			 */
			$result_subjects_check_count = 1;// количество входжений оценки по предмету в список предметов по выбранным специальностям
				foreach ($selectedprofessions_ids as $profession_id):
					$is_profile_subject = 0; // проверка на профильность предмета
					foreach ($preparedprofessions[$profession_id] as $subject_id):
						$is_profile_subject++;
						if ($subject_id == $result['subject_id']) {
							$newElement = array();
							$newElement['UID'] = $result['id'].'-2013#'.$result_subjects_check_count;
							$newElement['ResultValue'] = $result['score'];
							$newElement['ResultSourceTypeID'] = $result['resulttype_id'];
							$newElement['EntranceTestSubject']['SubjectID'] = $result['subject_id'];						
							// определяем оценка по предмету профильной направленности или нет
							if ($is_profile_subject == 1){
								$newElement['EntranceTestTypeID'] = 3;
							} else {
								$newElement['EntranceTestTypeID'] = 1;
							}
							//$newElement['ResultDocument'] = 'ResultDocument';
							//$newElement['EntarnceTestSubject'] = array();
							$newElement['CompetitiveGroupID'] = $profession_id.'-2013';
							array_push($testresults, $newElement);		
							$result_subjects_check_count++;
						}
					endforeach;
				endforeach;
			}
		endforeach;
		$wellformedresults = array();
		if (!empty($testresults)) {
			$wellformedresults['EntranceTestResult'] = $testresults;
		}
		//debug($wellformedresults);		
		// формирование элемента ApplicationDocuments
			$eduDocument = array();
			if ($abiturient['Abiturient']['educationdoctype_id'] == 1) {
				$eduDocument['SchoolCertificateDocument']['OriginalReceived'] = $abiturient['Abiturient']['originaleducationdoc'];
				$eduDocument['SchoolCertificateDocument']['DocumentSeries'] = $abiturient['Abiturient']['edudocser'];
				$eduDocument['SchoolCertificateDocument']['DocumentNumber'] = $abiturient['Abiturient']['edudocnum'];
			}
			if ($abiturient['Abiturient']['educationdoctype_id'] == 5 || $abiturient['Abiturient']['educationdoctype_id'] == 6) {
				$eduDocument['HighEduDiplomaDocument']['OriginalReceived'] = $abiturient['Abiturient']['originaleducationdoc'];
				$eduDocument['HighEduDiplomaDocument']['DocumentSeries'] = $abiturient['Abiturient']['edudocser'];
				$eduDocument['HighEduDiplomaDocument']['DocumentNumber'] = $abiturient['Abiturient']['edudocnum'];
			}
			if ($abiturient['Abiturient']['educationdoctype_id'] == 3 || $abiturient['Abiturient']['educationdoctype_id'] == 4) {
				$eduDocument['MiddleEduDiplomaDocument']['OriginalReceived'] = $abiturient['Abiturient']['originaleducationdoc'];
				$eduDocument['MiddleEduDiplomaDocument']['DocumentSeries'] = $abiturient['Abiturient']['edudocser'];
				$eduDocument['MiddleEduDiplomaDocument']['DocumentNumber'] = $abiturient['Abiturient']['edudocnum'];
			}	
			if ($abiturient['Abiturient']['educationdoctype_id'] == 2) {
				$eduDocument['BasicDiplomaDocument']['OriginalReceived'] = $abiturient['Abiturient']['originaleducationdoc'];
				$eduDocument['BasicDiplomaDocument']['DocumentSeries'] = $abiturient['Abiturient']['edudocser'];
				$eduDocument['BasicDiplomaDocument']['DocumentNumber'] = $abiturient['Abiturient']['edudocnum'];
			}			
			if ($abiturient['Abiturient']['educationdoctype_id'] == 7) {
				$eduDocument['SchoolCertificateBasicDocument']['OriginalReceived'] = $abiturient['Abiturient']['originaleducationdoc'];
				$eduDocument['SchoolCertificateBasicDocument']['DocumentSeries'] = $abiturient['Abiturient']['edudocser'];
				$eduDocument['SchoolCertificateBasicDocument']['DocumentNumber'] = $abiturient['Abiturient']['edudocnum'];
			}	
		// формирование элемента гражданство
		$citizenship = ''; // смотрим fis_countries
		// russia
		if ($abiturient['Citizenship']['id'] == 1) {
			$citizenship = 1;
		}
		// belorus
		if ($abiturient['Citizenship']['id'] == 2) {
			$citizenship = 29;
		}		
		// kazahstan
		if ($abiturient['Citizenship']['id'] == 3) {
			$citizenship = 102;
		}		
		// tadgikistan
		if ($abiturient['Citizenship']['id'] == 4) {
			$citizenship = 196;
		}	
		// kirgizstan
		if ($abiturient['Citizenship']['id'] == 5) {
			$citizenship = 108;
		}			
		/***********************************************************
		 * формирование заявления абитуриента
		 **********************************************************/ 
		$newdata =  array(
							'UID' => $abiturient['Abiturient']['id'].'-2013',
							'ApplicationNumber' => $abiturient['Abiturient']['id'],
							'Entrant' => array( // абитуриент
									'UID' => $abiturient['Abiturient']['id'].'-2013', // в нашем случае (ID абитуриента)
									'FirstName' => $abiturient['Abiturient']['firstname'], // в нашем случае (abiturients.firstname)
									'MiddleName' => $abiturient['Abiturient']['surname'], // в нашем случае (abiturients.surname)
									'LastName' => $abiturient['Abiturient']['lastname'], // в нашем случае (abiturients.lastname)
									'GenderID' => $gender, // пол смотри справочник fis_genders у нас наоборот значит if 1 then 2 or if 2 then 1
									//	'CustomInformation' => 'CustomInformation' доп информация представленная абитуриентом - необязательное
									//	'Snils' => 'Snils' // снилс в нашем случае  (abiturients.pension_certificate) - необязательное
							), // Entrant
							'RegistrationDate' => date('Y-m-d\TH:i:s', strtotime( $abiturient['Abiturient']['created'])), // дата регистрации заявления
							'NeedHostel' => $abiturient['Abiturient']['hostel'], // признак необходимости общежития
							'StatusID' => 4, // НОВОЕ нет  только ПРИНЯТО = 4 ИЛИ ОТОЗАВНО 6 статус заявления смотри справочник fis_appstatuses
							'SelectedCompetitiveGroups' => array( // конкурсеые группы для заявления
									'CompetitiveGroupID' => $selectedprofessions // UID конкурсной группы
							), // SelectedCompetitiveGroups		
							'SelectedCompetitiveGroupItems' => array( // элементы конкурсных групп для заявления
									'CompetitiveGroupItemID' => $selectedprofessions // 'CompetitiveGroupItemID' => 'CompetitiveGroupItemID' // UID направления подготовки в конкурсной группе
							), // CompetitiveGroupItems		
							'FinSourceAndEduForms' => array( // формы обучения и источники финансирования выбранные абитуриентом
									'FinSourceEduForm' => $FinSourceAndEduForms //пара форма обучения и источник финансирования
											//'FinanceSourceID' => 'FinanceSourceID', // id источника финансирования в нашем случае fis_learningtypes
											//'EducationFormID' => 'EducationFormID', // id формы обучения смотри fis_learnigforms
											// 'TargetOrganizationUID' => 'TargetOrganizationUID' // UID организации целевого приема (по ходу tgintakeorgs.id)
									//) //FinSourceEduForm
							), // FinSourceAndEduForms		
/* 							'ApplicationCommonBenefit' => $privileges,//array( // общая льгота предоставленная абитуриенту в нашем случае (abiturients.lastname)
									//'UID' => 'UID', // идентификатор В ИС ОУ по ходу  privilegedocs.id или abiturients_privileges.id или abiturient_id#privilege_id
									//'CompetitiveGroupID' => 'CompetitiveGroupID', // UID конкурсной группы
									//'DocumentTypeID' => 'DocumentTypeID', // id документа основания не обязательное
									//'DocumentReason' => array( // сведения о документе основании
									/**
									 *  будет один из элементов
											*  OlympicDocument
											*  OlympicTotalDocument
											*  MedicalDocuments
											*  CustomDocument
											*
											*/
									//), // DocumentReason
									//'BenefitKindID' => 'BenefitKindID' // id вида льготы в нашем случае это fis_privileges
									//
							//), // ApplicationCommonBenefit
							//'EntranceTestResults' => $wellformedresults, */
							'ApplicationDocuments' => array(
								'IdentityDocument' => array(
									'OriginalReceived' => 1, // признак предоставления оригинала документов Всегда !!!
									'DocumentSeries' => $abiturient['Abiturient']['passport_ser'], // серия
									'DocumentNumber' => $abiturient['Abiturient']['passport_num'], // номер
									'DocumentDate' =>  date('Y-m-d', strtotime( $abiturient['Abiturient']['passport_issuedate'])), // дата выдачи
									'IdentityDocumentTypeID' => 1, // Id типа док-та удостоверяющего личность смотри fis_identifydoctypes
										// но скорее всего только паспорт а это 1 или 3 - иностранный паспорт или 4 - св-во о рождении
									'NationalityTypeID' => $citizenship, // id  национальности - страна смотри fis_countries
									'BirthDate' =>  date('Y-m-d', strtotime( $abiturient['Abiturient']['birthdate'])), // дата рождения									
								),
								'EduDocuments' => array( // документы об образовании
									'EduDocument' => $eduDocument
								) //	'EduDocuments' 	
							)	
					);
					if (!empty($wellformedresults)) {
						$newdata['EntranceTestResults'] = $wellformedresults;
					}
					if (!empty($privileges)) {
						$newdata['ApplicationCommonBenefit'] = $privileges;
					}
		array_push($package_arr['Applications']['Application'], $newdata);
	endforeach;
	//debug($newdata);
	//debug($package_arr);
$xmlArray = array('Root' => array('AuthData' => array(), 'PackageData' => array()));
$xmlArray['Root']['AuthData'] = $auth_arr;
$xmlArray['Root']['PackageData'] = $package_arr;
//debug($xmlArray);
$resultxml = Xml::build($xmlArray, array('return' => 'simplexml'));

echo $resultxml->asXML();
?>

